
package com.udc.medLine.transaction;

import java.util.List;

import com.udc.medLine.entity.CondicaoVO;
import com.udc.medLine.entity.Funcionario;
import com.udc.medLine.entity.Categoria;
import com.udc.medLine.factory.FactoryFuncionario;
import com.udc.medLine.factory.FactoryCategoria;
import com.udc.medLine.persistence.Bd;

public class TransactionCategoria {

	private Categoria categoria;
	private List listCategoria;
	private Bd banco;
	
	/**
	 * 
	 */
	public TransactionCategoria() {
		super();
		categoria = new Categoria();
		try{
			banco = Bd.getInstance();
		}
		catch(Exception e){
			e.printStackTrace();
		}
		// TODO Stub de construtor gerado automaticamente
	}

	public Categoria getCategoria() {
		return categoria;
	}

	public void setCategoria(Categoria new_categoria) {
		this.categoria = new_categoria;
	}

	public void remover(Categoria nCategoria) throws Exception {
		banco.beginTransaction();
			FactoryCategoria factory = new FactoryCategoria();
			categoria.setId(nCategoria.getId());
			factory.setCategoria(categoria);
			factory.delete();
		banco.commit();
	}

	public void inserir(Categoria nCategoria) throws Exception {
		banco.beginTransaction();
			FactoryCategoria factory = new FactoryCategoria();			
			categoria.setNome(nCategoria.getNome());
			factory.setCategoria(categoria);
			factory.insert();
		banco.commit();
	}

	public void atualizar(Categoria nCategoria) throws Exception {
		banco.beginTransaction();
			FactoryCategoria factory = new FactoryCategoria();
			categoria.setId(nCategoria.getId());
			categoria.setNome(nCategoria.getNome());
			factory.setCategoria(categoria);
			factory.update();
		banco.commit();
	}


	public void obterCategoria(String campo, String valor) throws Exception{
		banco.beginTransaction();
			FactoryCategoria factory = new FactoryCategoria();
			factory.setCategoria(new Categoria());
			listCategoria = factory.getCategoria(campo,valor);
		banco.commit();
	}
	
	public void obterListaCategoria() throws Exception{
		banco.beginTransaction();
			FactoryCategoria factory = new FactoryCategoria();
			factory.setCategoria(new Categoria());
			listCategoria = factory.getListaCategoria();
		banco.commit();
	}
	
	public void obterCategoria(Categoria nCategoria) throws Exception{
		banco.beginTransaction();
			FactoryCategoria factory = new FactoryCategoria();
			categoria.setId(nCategoria.getId());
			factory.setCategoria(categoria);
			categoria = factory.obterCategoria();
		banco.commit();
	}
	
	/**
	 * @return
	 */
	public List getListCategoria() {
		return listCategoria;
	}

	/**
	 * @param list
	 */
	public void setListCategoria(List list) {
		listCategoria = list;
	}

	public List<Categoria> search(CondicaoVO condicao) throws Exception {
		banco.beginTransaction();
		FactoryCategoria factory = new FactoryCategoria();
		listCategoria = factory.search(condicao);
		banco.commit();
		return listCategoria;
	}

}
